import pandas as pd
import os
异常开始时间="10:23:00"
异常结束时间="10:35:00"
筛选母单状态=["过期","错误"]
files = [f for f in os.listdir(os.getcwd()) if f.startswith('算法母单') and f.endswith('.xlsx')]
if len(files) > 1 or len(files) == 0:
    print("算法母单的xlsx文件数量不为1，请检查！")
else:
    file_name = files[0]
    file_path = os.path.join(os.getcwd(), file_name)
    print(f"读取的算法母单文件为：{file_path}")
    df = pd.read_excel(file_path)
    筛选结果 = df[(df['实际结束时间'] >= 异常开始时间) & (df['实际结束时间'] <= 异常结束时间) & (df['状态'].isin(筛选母单状态)) & (df['手动停止']=="否")]
    过期母单数=len(筛选结果[筛选结果['状态']=="过期"])
    错误母单数=len(筛选结果[筛选结果['状态']=="错误"])
    print(f"已筛选结果{len(筛选结果)}笔母单,其中过期母单{过期母单数}笔,错误母单{错误母单数}笔")
    受影响客户清单=list(set(筛选结果["资金账号"].tolist()))
    资金账号文件=[f for f in os.listdir(os.getcwd()) if f.startswith('资金账号管理(机构客户)') and f.endswith('.xlsx')][0]
    资金账号信息=pd.read_excel(资金账号文件)
    受影响客户信息=pd.DataFrame(columns=['资金账号','账号名称','账号信息','管理人','过期母单数','错误母单数'])
    for 账号 in 受影响客户清单:
        资金账号=账号
        账号名称=筛选结果[筛选结果['资金账号']==账号]['账号名称'].iloc[0]
        账号信息=账号名称+str(账号)
        管理人=资金账号信息[资金账号信息['资金账号']==账号]['所属机构'].iloc[0]
        过期母单数=len(筛选结果[(筛选结果['资金账号']==账号) & (筛选结果['状态']=="过期")])
        错误母单数=len(筛选结果[(筛选结果['资金账号']==账号) & (筛选结果['状态']=="错误")])
        受影响资金账号信息=[资金账号,账号名称,账号信息,管理人,过期母单数,错误母单数]
        受影响资金账号信息=pd.DataFrame([受影响资金账号信息],columns=['资金账号','账号名称',"账号信息",'管理人','过期母单数','错误母单数'])
        受影响客户信息=pd.concat([受影响客户信息,受影响资金账号信息],ignore_index=True)
    i=0
    for 管理人 in 受影响客户信息['管理人'].unique():
        受影响账号清单=list(set(受影响客户信息[受影响客户信息['管理人']==管理人]['账号信息'].tolist()))
        错误母单数=sum(受影响客户信息[受影响客户信息['管理人']==管理人]['错误母单数'].tolist())
        过期母单数=sum(受影响客户信息[受影响客户信息['管理人']==管理人]['过期母单数'].tolist())
        i+=1
        print(f"{i}、在{异常开始时间}至{异常结束时间}时间段内，{管理人}共有{len(受影响账号清单)}个账号,共有{错误母单数}笔错误母单,共有{过期母单数}笔过期母单，账号明细如下：\n"
              f"{受影响账号清单}")
        print("     ")






